﻿using System.Collections;
using System.Collections.Generic;
using UnityEngine;

/// <summary>
/// 群体行为基类 - 定义所有群体行为的通用接口
/// 继承自ScriptableObject，可以在编辑器中创建和配置行为资源
/// 实现Boid算法的三种基本行为：分离、对齐、聚合
/// </summary>
public abstract class FlockBehavior : ScriptableObject
{
    /// <summary>
    /// 计算个体在当前环境下的移动向量
    /// 这是所有群体行为的核心方法，由具体的行为类实现
    /// </summary>
    /// <param name="agent">当前要计算移动的个体</param>
    /// <param name="context">周围邻居对象的Transform列表</param>
    /// <param name="flock">个体所属的群体</param>
    /// <returns>计算出的移动向量</returns>
    public abstract Vector2 CalculateMove(FlockAgent agent, List<Transform> context, Flock flock);
}
